
from app import db
from app.models.entidad import Entidad

class Permiso(db.Model):
    """
    Clase que representa la tabla permiso de la base de datos
    """

    __tablename__ = 'permiso'
    
    id = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(50))
    descripcion = db.Column(db.String(50))
    entidad_id = db.Column(None, db.ForeignKey("entidad.id"), nullable=True)
    entidad = db.relation(Entidad, backref=db.backref('entidad'))
    __table_args__ = (db.UniqueConstraint('nombre', 'entidad_id', name='combinacion'),
                     )
    
    
    def __init__(self, nombre=None,descripcion = None, entidad = None):
        """
            Constructor de la clase Permiso
        """
        self.nombre = nombre
        self.descripcion = descripcion
        self.entidad = entidad
        

    def __repr__(self):
        return '<Permiso %r>' % (self.nombre) + '<Entidad %r>' %(self.entidad_id)
    
    def setNombre(self, nombre):
        """
        Setea el nombre del permiso
        :param nombre:
        nombre del permiso
        """
        self.nombre = nombre
        
    def setDescripcion(self, descripcion):
        """
        Setea la descripcion del permiso
        :param descripcion:
        descripcion del permiso
        """
        self.descripcion = descripcion
    
    def setEntidad(self, entidad):
        """
        Setea la entidad relacionada al permiso
        :param entidad:
        entidad relacionada al permiso
        """
        self.entidad = entidad
